Caso ninguem crie, irei utilizar o seu topico para minha contribuição do dia mais tarde.
- Forums
- xTibia - Notícias e Suporte
- Soluções
- Archived
- Low Skills Lock
info
Group: Campones
Joined: 27/12/10
Posts: 45
Reputation: +4
Tibia Character: Ocrux

Agradeço @Krono, mas defina "mais tarde"?EUTOIMPLORANDO!!!
(:
Meu caro, fique ciente que estou aprendendo script, então o meu code pode não dar certo, nesse caso eu tentarei corrigir ou mandar outro script para solucionar o seu problema.
Segue o script:
local skillplayer = {getPlayerSkillLevel(cid, skill_axe), getPlayerSkillLevel(cid, skill_club), getPlayerSkillLevel(cid, skill_sword), getPlayerSkillLevel(cid, skill_fist), getPlayerSkillLevel(cid, skill_distance), getPlayerSkillLevel(cid, skill_maglevel, getPlayerSkillLevel(cid, skill_shield)} --ordem é axe club sword fist distance magic shield
function onLogin(cid)
if skillplayer.vocation[1] < skillminimo.vocation[1] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[1] - skillplayer[1])
end
if skillplayer.vocation[2] < skillminimo.vocation[2] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[2] - skillplayer[2])
end
if skillplayer.vocation[3] < skillminimo.vocation[3] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[13] - skillplayer[3])
end
if skillplayer.vocation[4] < skillminimo.vocation[4] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[4] - skillplayer[4])
end
if skillplayer.vocation[5] < skillminimo.vocation[5] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[5] - skillplayer[5])
end
if skillplayer.vocation[6] < skillminimo.vocation[6] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[6] - skillplayer[6])
end
if skillplayer.vocation[7] < skillminimo.vocation[7] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation[7] - skillplayer[7])
end
Espero que de certo, aguardo seu comentario
~~ att krono
Corrigido por fireelement.
Edited Abril 17 by Krono
info
Group: Conde
Joined: 16/06/08
Posts: 998
Reputation: +185
Gender: Masculino

Meu caro, fique ciente que estou aprendendo script, então o meu code pode não dar certo, nesse caso eu tentarei corrigir ou mandar outro script para solucionar o seu problema.
Segue o script:
local vocation = getPlayerVocation(cid)-- vocation local skillminimo = { [1, 5] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}, --sorcerer [2, 6] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}, --druid [3, 7] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}, -- paladin [4, 8] = {axe = 10, club = 10, sword = 10, fist = 10, distance = 10, magic = 10, shield = 10}} -- sorcerer local skillplayer = {getplayerskilllevel(cid, skill_axe), getplayerskilllevel(cid, skill_club), getplayerskilllevel(cid, skill_sword), getplayerskilllevel(cid, skill_fist), getplayerskilllevel(cid, skill_distance), getplayerskilllevel(cid, skill_maglevel, getplayerskilllevel(cid, skill_shield)} --ordem é axe club sword fist distance magic shield function onLogin(cid) if skillplayer.vocation[1] < skillminimo.vocation[1] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[1] - skillplayer[1]) end if skillplayer.vocation[2] < skillminimo.vocation[2] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[2] - skillplayer[2]) end if skillplayer.vocation[3] < skillminimo.vocation[3] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[13] - skillplayer[3]) end if skillplayer.vocation[4] < skillminimo.vocation[4] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[4] - skillplayer[4]) end if skillplayer.vocation[5] < skillminimo.vocation[5] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[5] - skillplayer[5]) end if skillplayer.vocation[6] < skillminimo.vocation[6] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[6] - skillplayer[6]) end if skillplayer.vocation[7] < skillminimo.vocation[7] doPlayerAddSkill(cid, skill_axe, skillminimo.vocation[7] - skillplayer[7]) end
Espero que de certo, aguardo seu comentario
~~ att krono
Tu pode fazer assim pra diminuir:
for i = 1, 7 do
if skillplayer.vocation[i] < skillminimo.vocation[i] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[i] - skillplayer[i])
end
end
E "getplayerskilllevel" tem que ser "getPlayerSkillLevel".
Faltou um "then" nos "if" também.
Acho que "[1, 5]" não vai funcionar, tem que ser só um valor ([1]).
Edited Abril 17 by fireelement
Erros de principiante.
Um script diminuido segundo a explicação que intendi do fireelement.
local skillplayer = {getPlayerSkillLevel(cid, skill_axe), getPlayerSkillLevel(cid, skill_club), getPlayerSkillLevel(cid, skill_sword), getPlayerSkillLevel(cid, skill_fist), getPlayerSkillLevel(cid, skill_distance), getPlayerSkillLevel(cid, skill_maglevel, getPlayerSkillLevel(cid, skill_shield)} --ordem é axe club sword fist distance magic shield
function onLogin(cid)
for i = 1, 7 do
if skillplayer.vocation[i] < skillminimo.vocation[i] then
doPlayerAddSkill(cid, skill_axe, skillminimo.vocation.[i] - skillplayer[i])
end
end
Obrigado pela ajuda ficou muito melhor.
:
Recomendaria colocar a tabela skillplayer dentro do callback. Como cid está sendo declarado no onUse, seu valor fora dele será nulo.
Ah, também faltou no final um return true end.
Edited Abril 17 by zipter98
info
Group: Campones
Joined: 27/12/10
Posts: 45
Reputation: +4
Tibia Character: Ocrux

[17/04/2015 21:19:58] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/skillslock.lua:3: ']' expected near ','
Tenta assim:
local config = {
skills = {SKILL_FIST, SKILL_CLUB, SKILL_SWORD, SKILL_AXE, SKILL_DISTANCE, SKILL_SHIELD, SKILL__MAGLEVEL},
minSkill = {
--[vocation_ID] = {fist, club, sword, axe, distance, shield, magic}, --NÃO altere a ordem.
[1] = {20, 1, 10, 5, 10, 15, 10},
[2] = {10, 15, 10, 20, 10, 5, 20},
},
}
function onLogin(cid)
local voc = getPlayerVocation(cid)
if config.minSkill[voc] then
for _, skillId in pairs(config.skills) do
if getPlayerSkillLevel(cid, skillId) < config.minSkill[voc][_] then
doPlayerAddSkill(cid, skillId, config.minSkill[voc][_] - getPlayerSkillLevel(cid, skillId))
end
end
end
return true
end
info
Group: Campones
Joined: 27/12/10
Posts: 45
Reputation: +4
Tibia Character: Ocrux

[17/04/2015 22:00:20] Druidzeraah has logged in.
info
Group: Conde
Joined: 03/01/12
Posts: 884
Reputation: +233
Tibia Character: Segredo

testa assim acho que faltou só as "aspas"
local config = {
skills = {"SKILL_FIST", "SKILL_CLUB", "SKILL_SWORD", "SKILL_AXE", "SKILL_DISTANCE", "SKILL_SHIELD", "SKILL__MAGLEVEL"},
minSkill = {
--[vocation_ID] = {fist, club, sword, axe, distance, shield, magic}, --NÃO altere a ordem.
[1] = {20, 1, 10, 5, 10, 15, 10},
[2] = {10, 15, 10, 20, 10, 5, 20},
},
}
function onLogin(cid)
local voc = getPlayerVocation(cid)
if config.minSkill[voc] then
for _, skillId in pairs(config.skills) do
if getPlayerSkillLevel(cid, skillId) < config.minSkill[voc][_] then
doPlayerAddSkill(cid, skillId, config.minSkill[voc][_] - getPlayerSkillLevel(cid, skillId))
end
end
end
return true
end
Edited Maio 13 by notle2012






info
Group: Campones
Joined: 27/12/10
Posts: 45
Reputation: +4
Tibia Character: Ocrux
Tipo do script: Creature Scripts
Protocolo (versão do Tibia): 8.60
Servidor utilizado: TheForgottenServerV8.2 32bit
Nível de experiência: Fácil
Adicionais/Informações: É exatamente igual o LowLevelLock, que não deixa você baixar do level 130; quero isso só que pra cada skills e configuravél por vocações; exemplo - Druid X de ML, kina X de Axe/Shield e por ai vai... Não acho que seja dificil, mas pra mim é.